#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>

// WiFi网络配置
const char* ssid = "OPPO K10 5G";
const char* password = "12345678";

// 继电器控制引脚
const int relayPin = 5;  // 根据实际连接修改

// 创建Web服务器，使用80端口
ESP8266WebServer server(80);

void setup() {
  // 初始化串口通信
  Serial.begin(115200);
  Serial.println("Starting WiFi Smart Light...");

  // 配置继电器引脚
  pinMode(relayPin, OUTPUT);
  digitalWrite(relayPin, LOW);  // 初始状态：关闭（假设继电器是低电平触发）

  // 连接WiFi
  WiFi.begin(ssid, password);
  while (WiFi.status() != WL_CONNECTED) {
    delay(1000);
    Serial.println("Connecting to WiFi...");
  }

  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());

  // 设置HTTP请求处理函数
  server.on("/", handleRoot);
  server.on("/on", handleOn);
  server.on("/off", handleOff);
  server.on("/status", handleStatus);

  // 启动服务器
  server.begin();
  Serial.println("HTTP server started");
}

void loop() {
  // 处理HTTP请求
  server.handleClient();
}

// 处理根路径请求
void handleRoot() {
  String page = "<html><body>";
  page += "<h1>WiFi智能灯控制</h1>";
  page += "<p>灯状态: ";
  page += (digitalRead(relayPin) == LOW) ? "开" : "关";
  page += "</p>";
  page += "<button onclick=\"window.location='/on'\">开灯</button>";
  page += "<button onclick=\"window.location='/off'\">关灯</button>";
  page += "</body></html>";

  server.send(200, "text/html", page);
}

// 处理开灯请求
void handleOn() {
  digitalWrite(relayPin, LOW);  // 假设继电器是低电平触发
  server.send(200, "text/plain", "灯已打开");
}

// 处理关灯请求
void handleOff() {
  digitalWrite(relayPin, HIGH);  // 假设继电器是低电平触发
  server.send(200, "text/plain", "灯已关闭");
}

// 处理状态请求
void handleStatus() {
  server.sendHeader("Access-Control-Allow-Origin", "*"); // 允许所有域名访问
  String status = (digitalRead(relayPin) == LOW) ? "on" : "off";
  server.send(200, "text/plain", status);  // 返回纯文本"on"或"off"
}



